package com.zb.user.service;

import com.zb.entity.ZjUserContact;
import com.zb.excel.UserExcelExport;
import com.zb.result.PageUtil;
import com.zb.vo.UserSelectVo;

import java.util.List;
import java.util.Map;

/**
 * 用户服务类
 * @Author WEN
 * @Date 2023/9/19 0019
 **/
public interface ConUserService {
    /**
     * 批量删除用户分类
     * @param idList
     */
    void deleteTypeBatchById(List<Long> idList);

    /**
     * 获取用户列表
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getList(Long custAccId, UserSelectVo selectVo);

    /**
     * 获取客户关联的工单数量
     * @param userId 客户ID
     * @return
     */
    long getUserRelationOrderQty(Long userId);

    /**
     * 获取客户关联的工单列表
     * @param userId 客户ID
     * @param pageUtil 分页对象
     * @return
     */
    Map<String, Object> getUserOrderList(Long userId, PageUtil pageUtil);

    /**
     * 获取客户关联的工单列表全部
     *
     * @param userId 客户ID
     * @return
     */
    Map<String, Object> getUserOrderListWithoutPagination(Long userId);


    /**
     * 获取客户关联的编码商品数量
     * @param userId 客户ID
     * @return
     */
    long getUserRelationCodeGoodsQty(Long userId);

    /**
     * 获取客户关联的编码商品列表
     * @param userId 客户ID
     * @param pageUtil 分页对象
     * @return
     */
    Map<String, Object> getUserRelationCodeGoodsList(Long userId, PageUtil pageUtil);

    /**
     * 根据工单ID获取客户关联信息
     * @param workId 工单ID
     * @return
     */
    Map<String, Object> getUserRelationInfo(Long workId);

    /**
     * 删除用户
     * @param ids
     */
    void deleteBatchByIds(List<Long> ids);

    /**
     * 获取客户导出数据
     * @param custAccId 商家ID
     * @param selectVo
     * @return
     */
    List<UserExcelExport> getUserExportExcel(Long custAccId, UserSelectVo selectVo);

    /**
     * 获取客户信息
     * @param name 客户姓名
     * @return
     */
    List<ZjUserContact> getUserContactByName(String name);


}
